import 'dart:io';

void main() {
  //不推荐写法
  // getFirstData().then((res) {
  //   print(res);
  //   getSecondData().then((res1) {
  //     print(res1);
  //     getThirdData().then((res2) {
  //       print(res2);
  //     });
  //   });
  // });

  //推荐写法
  getFirstData()
      .then((res) {
        print(res);
        return getSecondData();
      })
      .then((res2) => {getThirdData()})
      .then((res3) => {print(res3)})
      .catchError((e) => print(e));
}

Future<int> getFirstData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    // throw '第一个函数执行失败';
    return 11;
  });
}

// 第二个获取数据的函数
Future<int> getSecondData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    // return 22;
    throw '第二个函数执行失败';
  });
}

// 第三个获取数据的函数
Future<int> getThirdData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    return 33;
  });
}
